// Ion Blaster

ACTOR IonBlaster : IDMWeapon
{
	Inventory.PickupMessage "Ion Blaster!"
	Weapon.AmmoType "IDMCell"
	Weapon.AmmoUse 5
	Weapon.AmmoGive 40
	Weapon.Selectionorder 100
	//Weapon.PreferredSkin "IonMarine"
	Tag "Ion Blaster"
	+WEAPON.NOLMS
	States
	{
	Spawn:
      ISPP A -1 Bright
      stop
	Ready:
      ISPG A 1 A_WeaponReady
      Loop
	Deselect:
	  ISPG A 0 A_Lower
      ISPG A 0 A_Lower
      ISPG A 1 A_Lower
      Loop
	Select:
	  TNT1 A 0 A_PlaySound("weapons/wswitch",CHAN_WEAPON)
	Sloop:
      ISPG A 0 A_Raise
      ISPG A 0 A_Raise
      ISPG A 1 A_Raise
      loop
    Fire:
	  TNT1 A 0 A_GunFlash
	  TNT1 A 0 A_Playsound("weapons/ionblasf",CHAN_WEAPON)
	  TNT1 A 0 A_JumpIfInventory("PowerIDMWeaponLevel2",1,"Level2")
	  TNT1 A 0 A_JumpIfInventory("PowerQuadDamage",1,"Quad")
	  ISPG C 3 Bright Offset(0,46) A_FireCustomMissile("IonBall",0,1)
	  ISPG B 3 Bright Offset(0,43)
	  ISPG A 2 Offset(0,40)
	  ISPG A 2 Offset(0,37)
	  ISPG A 2 Offset(0,35)
	  ISPG A 2 Offset(0,33)
	  TNT1 A 0 A_Refire
	  Goto Ready
	Quad:
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  ISPG C 4 Bright Offset(0,44) A_FireCustomMissile("ExtremeIonBall",0,1)
	  Goto Fire+5
	Level2:
	  TNT1 A 0 A_JumpIfInventory("PowerQuadDamage",1,"QuadLevel2")
	  ISPG C 1 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),0)
	  TNT1 A 0 A_Playsound("weapons/ionblasf",CHAN_WEAPON)
	  ISPG C 1 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),0)
	  TNT1 A 0 A_Playsound("weapons/ionblasf",CHAN_WEAPON)
	  ISPG C 2 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),1)
	  Goto Fire+5
	QuadLevel2:
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  ISPG C 1 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),0)
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_Playsound("weapons/ionblasf",CHAN_WEAPON)
	  ISPG C 1 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),0)
	  TNT1 A 0 A_Playsound("misc/qdmg2",CHAN_5)
	  TNT1 A 0 A_Playsound("weapons/ionblasf",CHAN_WEAPON)
	  ISPG C 2 Bright Offset(0,44) A_FireCustomMissile("IonBall",random(-6,6),1)
	  Goto Fire+5
	Flash:
	  TNT1 A 5 A_Light2
	  TNT1 A 4 A_Light1
	  Goto LightDone
	}
}

ACTOR IonBall
{
	Radius 10
	Height 5
	Speed 45
	Damage (20 *random(1,10))
	Projectile
	+RANDOMIZE
	-NOTELEPORT
	+SKYEXPLODE
	+NOGRAVITY
	Bouncetype "Doom"
	Bouncecount 4
	BounceFactor 1.0
	WallBounceFactor 1.0
	Alpha 0.9
	Renderstyle Add
	Obituary "%o was evaporated by %k's Ion Blaster."
	Seesound "weapons/ionblf"
	DeathSound "weapons/ionblx"
	BounceSound "Weapons/ionbnce"
	DamageType "Plasma"
	Decal Plasmascorchlower
	States
	{
	Spawn:
      IONB A 1 Bright A_SpawnItemEx("IonBallTrail")
      Loop
	Death:
	  TNT1 A 0
	  IONB B 1 Bright A_Explode(48,80,1,0,80)
	  IONB B 2 Bright A_Playsound("weapons/ionblx",CHAN_VOICE)
	  IONB CDEFGHIJKL 3 Bright
	  Stop
	}
}

ACTOR IonBallTrail
{
	+NOGRAVITY
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	Alpha 0.75
	Scale 0.75
	Renderstyle Add
	States
	{
	Spawn:
	  TNT1 A 2
	  IONB A 1 Bright
	  IONB A 1 Bright A_SetScale(0.5)
	  IONB A 1 Bright A_SetScale(0.25)
	  Stop
	}
}

ACTOR ExtremeIonBall : IonBall
{
	+EXTREMEDEATH
	States
	{
	XDeath:
		TNT1 A 0 A_Playsound("misc/crit",CHAN_AUTO)
		Goto Death
	}
}